<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <ui:define name="cabecera">
        <title>Gestión de Especies</title>
        <link rel="shortcut icon"  href="../../resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        <center>
            <p:panel id="especiePnl" header="Especies" style="width: 950px">
                <h:form id="tablaEspecieFrm">
                    <p:dataTable id="tablaEspecie" var="especie" rows="10" selectionMode="single"
                                 value="#{especieBean.listaEspecie}" rowKey="#{especie.codigoespecie}"
                                 paginator="true" paginatorPosition="bottom" resizableColumns="true"
                                 emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Especie" filterBy="#{especie.nombre}" 
                                  sortBy="#{especie.nombre}" filterMatchMode="contains">
                            <h:outputText id="nombreTxt" value="#{especie.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Especie" filterBy="#{especie.subespecie}" 
                                  sortBy="#{especie.subespecie}" filterMatchMode="contains">
                            <h:outputText id="subespecieTxt" value="#{especie.subespecie}" />
                        </p:column>
                        <p:column headerText="Variedad" filterBy="#{especie.variedad}" 
                                  sortBy="#{especie.variedad}" filterMatchMode="contains">
                            <h:outputText id="variedadTxt" value="#{especie.variedad}" />
                        </p:column>                       
                        <p:column headerText="Phylum" filterMatchMode="contains"
                                  filterBy="#{especie.genero.familia.superfamilia.orden.clase.phylum.nombre}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.clase.phylum.nombre}">
                            <h:outputText id="phylumTxt" value="#{especie.genero.familia.superfamilia.orden.clase.phylum.nombre}" />
                        </p:column>
                        <p:column headerText="Clase" filterBy="#{especie.genero.familia.superfamilia.orden.clase.nombre}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.clase.nombre}" filterMatchMode="contains">
                            <h:outputText id="claseTxt" value="#{especie.genero.familia.superfamilia.orden.clase.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Clase" filterBy="#{especie.genero.familia.superfamilia.orden.clase.subclase}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.clase.subclase}" filterMatchMode="contains">
                            <h:outputText id="subclaseTxt" value="#{especie.genero.familia.superfamilia.orden.clase.subclase}" />
                        </p:column>
                        <p:column headerText="Infra-Clase" filterBy="#{especie.genero.familia.superfamilia.orden.clase.infraclase}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.clase.infraclase}" filterMatchMode="contains">
                            <h:outputText id="infraclaseTxt" value="#{especie.genero.familia.superfamilia.orden.clase.infraclase}" />
                        </p:column>
                        <p:column headerText="Orden" filterBy="#{especie.genero.familia.superfamilia.orden.nombre}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.nombre}" filterMatchMode="contains">
                            <h:outputText id="ordenTxt" value="#{especie.genero.familia.superfamilia.orden.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Orden" filterBy="#{especie.genero.familia.superfamilia.orden.suborden}" 
                                  sortBy="#{especie.genero.familia.superfamilia.orden.suborden}" filterMatchMode="contains">
                            <h:outputText id="subordenTxt" value="#{especie.genero.familia.superfamilia.orden.suborden}" />
                        </p:column>
			<p:column headerText="Super-Familia" filterBy="#{especie.genero.familia.superfamilia.nombre}" 
                                  sortBy="#{especie.genero.familia.superfamilia.nombre}" filterMatchMode="contains">
                            <h:outputText id="superfamiliaTxt" value="#{especie.genero.familia.superfamilia.nombre}" />
                        </p:column>
			<p:column headerText="Familia" filterBy="#{especie.genero.familia.nombre}" 
                                  sortBy="#{especie.genero.familia.nombre}" filterMatchMode="contains">
                            <h:outputText id="familiaTxt" value="#{especie.genero.familia.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Familia" filterBy="#{especie.genero.familia.subfamilia}" 
                                  sortBy="#{especie.genero.familia.subfamilia}" filterMatchMode="contains">
                            <h:outputText id="subfamiliaTxt" value="#{especie.genero.familia.subfamilia}" />
                        </p:column>
                        <p:column headerText="Tribu" filterBy="#{especie.genero.familia.tribu}" 
                                  sortBy="#{especie.genero.familia.tribu}" filterMatchMode="contains">
                            <h:outputText id="tribuTxt" value="#{especie.genero.familia.tribu}" />
                        </p:column> 
			<p:column headerText="Género" filterBy="#{especie.genero.nombre}" 
                                  sortBy="#{especie.genero.nombre}" filterMatchMode="contains">
                            <h:outputText id="generoTxt" value="#{especie.genero.nombre}" />
                        </p:column>
                       <p:column headerText="Habilitado" filterBy="#{especie.habilitado}" 
                                  sortBy="#{especie.habilitado}" filterMatchMode="contains">
                            <h:outputText id="habilitadoTxt" value="#{especie.habilitado}" />
                        </p:column>
                        <p:column headerText="Modificar">
                            <center>
                                <p:commandButton id="modificarBtn" title="Modificar" icon="ui-icon-pencil"
                                                 oncomplete="modificarEspecieWgt.show()"
                                                 actionListener="#{especieBean.prepararModificacion(especie)}"
                                                 update=":modificarEspecieFrm:modificarEspeciePnl"/>
                            </center>
                        </p:column>     
                    </p:dataTable>
                    <p:commandButton id="nuevoBtn" value="Nueva Especie"
                                     oncomplete="guardarEspecieWgt.show()"
                                     actionListener="#{especieBean.prepararAdicion}"
                                     update=":guardarEspecieFrm:guardarEspeciePnl"
                                     title="Agregar nueva especie" icon="ui-icon-document" />
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
        <p:dialog id="guardarEspecieDlg" header="Nueva Especie" widgetVar="guardarEspecieWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="guardarEspecieFrm">
                <h:panelGrid id="guardarEspeciePnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigogeneroTxt" value="Género:" />
                    <p:selectOneMenu id="codigogeneroTxt" value="#{especieBean.especie.genero}"
                                     filter="true" filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{especieBean.listaGenero}" />
                        <f:converter converterId="generoConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Especie: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{especieBean.especie.nombre}" />
                    <p:outputLabel for="subespecieTxt" value="Nombre de la Sub-Especie: " />
                    <p:inputText id="subespecieTxt" title="Opcional" value="#{especieBean.especie.subespecie}" />
                    <p:outputLabel for="variedadTxt" value="Nombre de la Variedad: " />
                    <p:inputText id="variedadTxt" title="Opcional" value="#{especieBean.especie.variedad}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn"  actionListener="#{especieBean.agregarEspecie}"
                                     oncomplete=":guardarEspecieWgt.hide()" 
                                     update=":tablaEspecieFrm:tablaEspecie" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="guardarEspecieWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
        <p:dialog id="modificarEspecieDlg" header="Modificar Especie" widgetVar="modificarEspecieWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="modificarEspecieFrm">
                <h:panelGrid id="modificarEspeciePnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigogeneroTxt" value="Género:" />
                    <p:selectOneMenu id="codigogeneroTxt" value="#{especieBean.especie.genero}"
                                     filter="true" filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{especieBean.listaGenero}" />
                        <f:converter converterId="generoConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre de la Especie: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{especieBean.especie.nombre}" />
                    <p:outputLabel for="subespecieTxt" value="Nombre de la Sub-Especie: " />
                    <p:inputText id="subespecieTxt" title="Opcional" value="#{especieBean.especie.subespecie}" />
                    <p:outputLabel for="variedadTxt" value="Nombre de la Variedad: " />
                    <p:inputText id="variedadTxt" title="Opcional" value="#{especieBean.especie.variedad}" />
                    <p:outputLabel for="habilitadoTxt" value="Habilitado: " />
                    <p:selectBooleanCheckbox id="habilitadoTxt" value="#{especieBean.especie.habilitado}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn" actionListener="#{especieBean.actualizarEspecie}" 
                                     oncomplete=":modificarEspecieWgt.hide()" 
                                     update=":tablaEspecieFrm:tablaEspecie" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="modificarEspecieWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>